<!DOCTYPE html>
<html lang="zh-CN">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>用户显示名称测试</title>
    <style>
        body {
            font-family: Arial, sans-serif;
            max-width: 800px;
            margin: 50px auto;
            padding: 20px;
        }
        .test-section {
            margin-bottom: 30px;
            padding: 20px;
            border: 1px solid #ddd;
            border-radius: 8px;
        }
        button {
            background-color: #007bff;
            color: white;
            padding: 10px 20px;
            border: none;
            border-radius: 4px;
            cursor: pointer;
            margin-right: 10px;
        }
        button:hover {
            background-color: #0056b3;
        }
        .result {
            margin-top: 15px;
            padding: 10px;
            border-radius: 4px;
            white-space: pre-wrap;
            background-color: #f8f9fa;
            border: 1px solid #dee2e6;
        }
        .success {
            background-color: #d4edda;
            border: 1px solid #c3e6cb;
            color: #155724;
        }
        .error {
            background-color: #f8d7da;
            border: 1px solid #f5c6cb;
            color: #721c24;
        }
    </style>
</head>
<body>
    <h1>用户显示名称测试</h1>
    
    <div class="test-section">
        <h2>1. 测试当前登录用户</h2>
        <button onclick="testCurrentUser()">测试当前用户</button>
        <div id="current-user-result"></div>
    </div>
    
    <div class="test-section">
        <h2>2. 模拟不同用户数据结构</h2>
        <button onclick="testUserDataStructures()">测试用户数据结构</button>
        <div id="user-structures-result"></div>
    </div>
    
    <div class="test-section">
        <h2>3. 用户显示名称逻辑</h2>
        <button onclick="testDisplayLogic()">测试显示逻辑</button>
        <div id="display-logic-result"></div>
    </div>

    <script>
        async function testCurrentUser() {
            const resultDiv = document.getElementById('current-user-result');
            try {
                const response = await fetch('http://localhost:9090/api/auth/login', {
                    method: 'POST',
                    headers: {
                        'Content-Type': 'application/json'
                    },
                    body: JSON.stringify({
                        username: 'admin',
                        password: 'admin123'
                    })
                });
                
                if (response.ok) {
                    const responseData = await response.json();
                    resultDiv.className = 'result success';
                    
                    let resultText = '✅ 登录成功!\n\n';
                    resultText += '用户数据结构:\n';
                    resultText += JSON.stringify(responseData.data.user, null, 2) + '\n\n';
                    
                    // 测试显示名称逻辑
                    const user = responseData.data.user;
                    const displayName = getUserDisplayName(user);
                    
                    resultText += '显示名称逻辑:\n';
                    resultText += `- 职位: ${user.position || '无'}\n`;
                    resultText += `- 全名: ${user.fullName || '无'}\n`;
                    resultText += `- 姓名: ${user.name || '无'}\n`;
                    resultText += `- 用户名: ${user.username || '无'}\n`;
                    resultText += `- 最终显示: ${displayName}\n`;
                    
                    resultDiv.textContent = resultText;
                } else {
                    resultDiv.className = 'result error';
                    resultDiv.textContent = '❌ 登录失败: ' + response.status;
                }
            } catch (error) {
                resultDiv.className = 'result error';
                resultDiv.textContent = '❌ 请求错误: ' + error.message;
            }
        }
        
        function testUserDataStructures() {
            const resultDiv = document.getElementById('user-structures-result');
            resultDiv.className = 'result';
            
            // 模拟不同的用户数据结构
            const testUsers = [
                {
                    name: '有职位的用户',
                    user: {
                        id: 1,
                        username: 'admin',
                        fullName: '系统管理员',
                        position: '技术总监',
                        role: 'ADMIN'
                    }
                },
                {
                    name: '只有全名的用户',
                    user: {
                        id: 2,
                        username: 'agent1',
                        fullName: '客服小王',
                        role: 'AGENT'
                    }
                },
                {
                    name: '只有用户名的用户',
                    user: {
                        id: 3,
                        username: 'customer1',
                        role: 'CUSTOMER'
                    }
                },
                {
                    name: '空用户',
                    user: {}
                }
            ];
            
            let resultText = '用户数据结构测试:\n\n';
            
            testUsers.forEach(testUser => {
                const displayName = getUserDisplayName(testUser.user);
                resultText += `${testUser.name}:\n`;
                resultText += `- 用户数据: ${JSON.stringify(testUser.user)}\n`;
                resultText += `- 显示名称: ${displayName}\n\n`;
            });
            
            resultDiv.textContent = resultText;
        }
        
        function testDisplayLogic() {
            const resultDiv = document.getElementById('display-logic-result');
            resultDiv.className = 'result';
            
            let resultText = '用户显示名称逻辑说明:\n\n';
            resultText += '优先级顺序:\n';
            resultText += '1. position (职位) - 最高优先级\n';
            resultText += '2. fullName (全名) - 第二优先级\n';
            resultText += '3. name (姓名) - 第三优先级\n';
            resultText += '4. username (用户名) - 第四优先级\n';
            resultText += '5. 空字符串 - 默认值\n\n';
            
            resultText += '示例:\n';
            resultText += '- 如果用户有职位: 显示职位\n';
            resultText += '- 如果用户没有职位但有全名: 显示全名\n';
            resultText += '- 如果用户只有用户名: 显示用户名\n';
            resultText += '- 如果用户信息为空: 显示空字符串\n\n';
            
            resultText += '当前后端返回的用户数据:\n';
            resultText += '- fullName: "系统管理员"\n';
            resultText += '- position: 未提供\n';
            resultText += '- 因此会显示: "系统管理员"\n';
            
            resultDiv.textContent = resultText;
        }
        
        // 模拟前端的用户显示名称逻辑
        function getUserDisplayName(user) {
            if (user?.position) {
                return user.position;
            }
            if (user?.fullName) {
                return user.fullName;
            }
            if (user?.name) {
                return user.name;
            }
            if (user?.username) {
                return user.username;
            }
            return '';
        }
    </script>
</body>
</html>
